import { EzFormControl, EzFormControlConfiguration } from '../ez-form-control';

/**
 * 表单控件组对象接口
 */
export interface EzFormGroup {
  /**
   * 添加表单控件
   * @param configuration 表单控件配置
   * @param index 表单控件插入位置
   */
  add(configuration: EzFormControlConfiguration, index?: number): void;

  /**
   * 删除表单控件
   * @param name 表单控件名称
   */
  remove(name: string): void;

  /**
   * 获取表单控件
   * @param name 表单控件名称
   */
  get<C extends EzFormControl = EzFormControl>(name: string): C;

  /**
   * 判断表单控件组是否包含控件
   * @param name 表单控件名称
   */
  contains(name: string): boolean;

  /**
   * 禁用控件（参数为空则禁用所有组下控件）
   */
  disable(names?: string | string[]): void;

  /**
   * 启用控件（参数为空则启用所有组下控件）
   */
  enable(names?: string | string[]): void;
}
